Data storage systems are used to store large amounts of information received from one or more sources. A data storage system often comprises a storage controller in communication with one or more clients, often referred to as “hosts,” and also in communication with a plurality of data storage devices. A host computing device may send a storage controller a write command to write certain information to a data storage medium, and/or a read command to read information from a data storage medium, and/or a copy command to copy information from one data storage medium to another data storage medium. Host computers may also provide commands to a storage controller to establish or revise physical and/or logical configurations. In certain embodiments, a read command, or a write command, or a copy command, or a configuration command comprises a plurality of objects packaged in one command
Many storage systems include a number of different storage devices, each arranged in a number of tiers. The storage devices and associated tiers are arranged to provide different performance characteristics. For example, a high performance tier of a particular storage system may include a number of solid state disks (SSDs) that provide short seek times. Because SSDs can be relatively expensive, the storage system may also include a lower performance tier made up of a number of slower devices, such as Serial Advanced Technology Attachment (SATA) drives. Although the SATA drives provide higher seek times, they can be a more inexpensive way to store data than additional SSD drives.
Within a storage system, the storage devices are connected to the storage system controller through a number of interfaces and each share a limited number of resources. The available resources are distributed amongst the connected storage devices in a first-come, first-served basis. For example, a controller within a storage system may be connected to both SSDs and spinning disks, where the available resources are allocated to each storage device upon request. Once allocated, the resources stay allocated (and unavailable to other devices) until the requesting device completes its task. Because spinning disk devices are slower than the SSDs, resources allocated to those storage devices will stay allocated for a longer time period than for higher performance devices. Accordingly, if both types of devices share the same pool of resources, eventually the slower devices will consume all of the resources. As a result, the performance of the faster (SSD) devices is limited to the actual performance of the slower (spinning disk) devices.